package com.jyw.business.ins.domain.dto.web;

import com.jyw.business.ins.domain.InsTask;
import com.jyw.business.ins.domain.InsTaskRectify;
import com.jyw.business.obstacles.domain.dto.web.BaseOrderAddDto;
import com.jyw.system.domain.vo.SimpleFileVo;
import com.jyw.system.utils.FileUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @author Created by ZhangCheng on 2023/10/09 (修改巡检任务请求实体)
 */
@Data
@ApiModel("基类-修改巡检任务请求实体")
public class BaseInsTaskEditDto {

    /**
     * 主键
     */
    @ApiModelProperty("主键")
    @NotNull(message = "巡检任务ID不能为空")
    private Long id;

    /**
     * 巡检结果（1正常 2异常）
     */
    @ApiModelProperty("巡检结果（1正常 2异常）")
    @NotNull(message = "巡检结果不能为空")
    private Integer result;

    /**
     * 处理办法（1限期整改 2转工单）
     */
    @ApiModelProperty("处理办法（1限期整改 2转工单）")
    private Integer handleMethod;

    /**
     * 详细说明
     */
    @ApiModelProperty("详细说明")
    private String elaborate;

    /**
     * 巡检过程照片（附件）
     */
    @ApiModelProperty("巡检过程照片（附件）")
    private List<SimpleFileVo> inspectionPhotos;

    /**
     * 巡检内容巡检项
     */
    @ApiModelProperty("巡检内容巡检项")
    private List<InsTaskItemAddDto> taskItemList;


    /**
     * 整改开始日期
     */
    @ApiModelProperty("整改开始日期(yyyy-MM-dd)")
    private LocalDate rectifyStartDate;

    /**
     * 整改结束日期
     */
    @ApiModelProperty("整改结束日期(yyyy-MM-dd)")
    private LocalDate rectifyEndDate;

    /**
     * 整改责任人ID
     */
    @ApiModelProperty("整改责任人ID")
    private Long rectifyUserId;

    /**
     * 整改要求及建议
     */
    @ApiModelProperty("整改要求及建议")
    @Size(max = 1000, message = "整改要求及建议不能超过1000字符！")
    private String rectifyOpinion;

    public InsTaskRectify buildRectify(){
        InsTaskRectify insTaskRectify = new InsTaskRectify();
        insTaskRectify.setTaskId(getId());
        insTaskRectify.setRectifyStartDate(getRectifyStartDate());
        insTaskRectify.setRectifyEndDate(getRectifyEndDate());
        insTaskRectify.setRectifyUserId(getRectifyUserId());
        insTaskRectify.setRectifyOpinion(getRectifyOpinion());
        insTaskRectify.setIsRectify(false);
        insTaskRectify.setCreateTime(LocalDateTime.now());
        return insTaskRectify;
    }

    public InsTask buildTask(){
        InsTask task = new InsTask();
        task.setId(getId());
        task.setIsInspect(true);
        task.setInspectionTime(LocalDateTime.now());
        task.setResult(getResult());
        task.setHandleMethod(getHandleMethod());
        task.setElaborate(getElaborate());
        task.setInspectionPhotos(FileUtils.fileToId(getInspectionPhotos()));
        return task;
    }

    /**
     * 需要继承类实现返回对象
     * @return
     */
    public BaseOrderAddDto getOrderAddDto() {
        return null;
    }
}
